home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
docs
/
ippon
/
jumptbl
/
jumptbl.lzh
/
jumptbl.c
next >
Wrap
C/C++ Source or Header
|
2000-07-07
|
1KB
|
73 lines
/* jumptbl.c */
/* ジャンプテーブルのテスト(処理内容に意味無し) */
#include <stdio.h>
#include <stdlib.h>
/* 関数プロトタイプ宣言 */
int FuncTest0 (int, int);
int FuncTest1 (int, int);
int FuncTest2 (int, int);
/* 関数へのポインタの配列 */
/* int の引き数を2つ受け取り、返り値は int である関数へのポインタの配列 */
typedef int (*func_test) (int, int);
func_test FuncTest[] =
{
FuncTest0,
FuncTest1,
FuncTest2,
};
int FuncTest0 (int i, int n)
{
printf ("関数 FuncTest0() を実行しました 実行回数は %d 回目です\n", n);
return (i);
}
int FuncTest1 (int i, int n)
{
printf ("関数 FuncTest1() を実行しました 実行回数は %d 回目です\n", n);
return (i + 1);
}
int FuncTest2 (int i, int n)
{
printf ("関数 FuncTest2() を実行しました 実行回数は %d 回目です\n", n);
return (i * 2);
}
void FuncEnd (int n)
{
printf ("関数 FuncEnd() を実行しました 実行回数は %d 回目です\n", n);
}
int main (int argc, char *argv[])
{
int i, j;
int n = 1; /* 何回目か */
void (*func_end) (int n); /* 終了関数へのポインタ */
/* 実験その1・関数へのポインタの配列 */
for (;;) {
printf ("0 から 3 の数字を入力して下さい(3 で終了)\n");
scanf ("%d", &i);
if (i == 3)
break;
j = FuncTest[i] (i, n); /* 各ルーチンへ飛ぶ(関数へのポインタ) */
printf (" 結果は %d です\n", j);
n++;
}
/* 実験その2・関数へのポインタを変数に代入してみる */
func_end = FuncEnd; /* 関数へのポインタは代入もできる */
(*func_end) (n); /* FuncEnd() を実行する */
return (0);
}